A distributed file system (DFS) is a file system that allows access to files from multiple devices. The DFS may employ a server-client architecture where clients may access files stored on central servers. Authorization rights may determine the extent, if any, of such access. The servers may be powerful computers dedicated to managing disk drives and may be collectively referred to as the back end of the DFS, and the clients may be personal computers and may be collectively referred to as the front end of the DFS. The servers may comprise, or be communicatively coupled to, system disk arrays. The system disk arrays may each comprise multiple system disks. Users may operate the clients using software applications. The DFS may use a uniform naming convention and mapping scheme to keep track of file locations. One advantage of DFSs is that they provide a centralized storage system on the servers, which may free resources on the clients that the clients would otherwise use to store files. The freed resources may thus allow the clients to perform other important functions.
Network File System (NFS) is a DFS protocol used to allow a client to access files on servers. NFS version 4.1 is the latest version of NFS and is incorporated by reference in its entirety. NFS and other DFS protocols may comprise remote procedural calls (RPCs), which may refer to communications that allow one device to cause a procedure to execute on another device without explicit user interaction. Typical RPCs may be read, write, remove, and read a directory (e.g., readdir). RPCs are invoked with reference to an opaque file handle and input parameters, or call arguments. NFS was previously a stateless protocol, meaning that it treated each request for data as an independent request unrelated to any previous request. NFS has, however, evolved to a stateful protocol, meaning that related requests are treated as such. The evolution to a stateful protocol has improved performance of DFSs for wide area networks (WANs), but as file sizes increase and DFSs become more complicated, it is becoming more important to further optimize file distribution in DFSs.